#include <head.h>

int main(int argc, char const *argv[])
{
    printf("准备启动\n");

    int fifo[3];

    fifo[0] = open("fifo_1", O_RDONLY);
    printf("文件1启动成功\n");

    fifo[1] = open("fifo_2", O_RDONLY);
    printf("文件2启动成功\n");

    fifo[2] = open("fifo_3", O_RDONLY);
    printf("文件3启动成功\n");

    char buf[128];
    printf("全部文件启动成功\n");

    int read_sata;
    int flags;

    for (size_t i = 0; i < 3; i++)
    {
        flags = fcntl(fifo[i], F_GETFL); // 获取原始状态 并 返回给 flag
        flags |= O_NONBLOCK;			 // 将 收到的 flag 增加一个非阻塞态
        fcntl(fifo[i], F_SETFL, flags);  // 将 flag 设定到我们当前的文件描述符中
    }

    while (1)
    {
        for (size_t i = 0; i < 3; i++)
        {
            memset(buf, 0, sizeof(buf));
            read_sata = read(fifo[i], buf, sizeof(buf));
            if (-1 != read_sata)
            {
                printf("fifo_%ld = %s\n",i + 1 ,  buf);
            }
        }
    }

    return 0;
}



// TCP 类似于这种情况  绑定的时候 自己创建一个fd  链接成功之后 还需要增加文件描述符